From 841d10cf2c15daf42a13e81d310db189815a3f4c Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Sun, 20 Feb 2005 03:52:37 +0000 Subject: [PATCH] bitkeeper revision 1.1229 (42180985F67QALsnFjovJHWiIDEz_A) Fix return-code checking in tools. Signed-off-by: Rik van Riel Signed-off-by: Keir Fraser --- tools/libxc/xc_plan9_build.c | 27 --------------------------- tools/libxc/xc_private.c | 12 +++++++++--- tools/python/xen/lowlevel/xc/xc.c | 8 ++++---- tools/xentrace/xentrace.c | 10 ++++++++-- 4 files changed, 21 insertions(+), 36 deletions(-) diff --git a/tools/libxc/xc_plan9_build.c b/tools/libxc/xc_plan9_build.c index 0394938c17..417cc78032 100755 --- a/tools/libxc/xc_plan9_build.c +++ b/tools/libxc/xc_plan9_build.c @@ -58,33 +58,6 @@ memcpy_toguest(int xc_handle, u32 dom, void *v, int size, return ret; } -/* this is a function which can go away. It dumps a hunk of - * guest pages to a file (/tmp/dumpit); handy for debugging - * your image builder. - * Xen guys, nuke this if you wish. - */ -void -dumpit(int xc_handle, u32 dom, - int start_page, int tot, unsigned long *page_array) -{ - int i, ofd; - unsigned char *vaddr; - - ofd = open("/tmp/dumpit", O_RDWR); - for (i = start_page; i < tot; i++) { - vaddr = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE, - PROT_READ | PROT_WRITE, - page_array[i]); - if (!vaddr) { - fprintf(stderr, "Page %d\n", i); - perror("shit"); - read(0, &i, 1); - return; - } - write(ofd, vaddr, 4096); - munmap(vaddr, PAGE_SIZE); - } -} int blah(char *b) { diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c index 65aa1085e0..37342ac837 100644 --- a/tools/libxc/xc_private.c +++ b/tools/libxc/xc_private.c @@ -276,12 +276,14 @@ unsigned long xc_get_filesz(int fd) unsigned long sz; lseek(fd, 0, SEEK_SET); - read(fd, &sig, sizeof(sig)); + if ( read(fd, &sig, sizeof(sig)) != sizeof(sig) ) + return 0; sz = lseek(fd, 0, SEEK_END); if ( sig == 0x8b1f ) /* GZIP signature? */ { lseek(fd, -4, SEEK_END); - read(fd, &_sz, 4); + if ( read(fd, &_sz, 4) != 4 ) + return 0; sz = _sz; } lseek(fd, 0, SEEK_SET); @@ -302,7 +304,11 @@ char *xc_read_kernel_image(const char *filename, unsigned long *size) goto out; } - *size = xc_get_filesz(kernel_fd); + if ( (*size = xc_get_filesz(kernel_fd)) == 0 ) + { + PERROR("Could not read kernel image"); + goto out; + } if ( (kernel_gfd = gzdopen(kernel_fd, "rb")) == NULL ) { diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c index 543a2cd380..2e425d4887 100644 --- a/tools/python/xen/lowlevel/xc/xc.c +++ b/tools/python/xen/lowlevel/xc/xc.c @@ -430,11 +430,9 @@ static PyObject *pyxc_vmx_build(PyObject *self, printf ("numItems: %d\n", numItems); mem_map.nr_map = numItems; - /* should raise an error here. */ if (numItems < 0) return NULL; /* Not a list */ - /* iterate over items of the list, grabbing ranges and parsing them */ for (i = 1; i <= numItems; i++) { // skip over "memmap" PyObject *item, *f1, *f2, *f3, *f4; @@ -461,8 +459,10 @@ static PyObject *pyxc_vmx_build(PyObject *self, sf2 = PyString_AsString(f2); lf3 = PyLong_AsLong(f3); lf4 = PyLong_AsLong(f4); - sscanf(sf1, "%lx", &lf1); - sscanf(sf2, "%lx", &lf2); + if ( sscanf(sf1, "%lx", &lf1) != 1 ) + return NULL; + if ( sscanf(sf2, "%lx", &lf2) != 1 ) + return NULL; mem_map.map[i-1].addr = lf1; mem_map.map[i-1].size = lf2 - lf1; diff --git a/tools/xentrace/xentrace.c b/tools/xentrace/xentrace.c index 351ecd71a8..2eaa1a1c25 100644 --- a/tools/xentrace/xentrace.c +++ b/tools/xentrace/xentrace.c @@ -77,8 +77,14 @@ struct timespec millis_to_timespec(unsigned long millis) */ void write_rec(unsigned int cpu, struct t_rec *rec, FILE *out) { - fwrite(&cpu, sizeof(cpu), 1, out); - fwrite(rec, sizeof(*rec), 1, out); + size_t written = 0; + written += fwrite(&cpu, sizeof(cpu), 1, out); + written += fwrite(rec, sizeof(*rec), 1, out); + if ( written != 2 ) + { + PERROR("Failed to write trace record"); + exit(EXIT_FAILURE); + } } /** -- 2.30.2